(**

   Si vous  voulez savoir  les cartes que  vous pouvez  appeler, c'est
   ici.
   
   @author Vivien Kraus

*)

(**

   Cette signature correspond exactement au module {!Carte}. Le module
   entier a été écrit sous forme d'un foncteur, comme pour {!Ecart}, à
   des fins pédagogiques.

*)
module type TCarte =
  sig
    type carte
    val appeler_en_priorite: carte list list
  end

(**

   Ce  foncteur s'applique  généralement  sur le  module {!Carte},  et
   décide  à  partir d'un  certain  jeu  quelles  cartes peuvent  être
   appelées.

*)
module Make :
  functor (Carte: TCarte) ->
	  sig
	    
	    (** 

		[cartes_appelables  mon_jeu]  retourne  la  liste  des
		cartes appelables.
		
	    *)
	    val cartes_appelables: Carte.carte list -> Carte.carte list
	  end
